/*
    spring容器注解：使用配置类来完成注入，不再使用配置文件（xml）
           Spring 框架核心组件之一是 IOC，IOC 则管理 Bean 的创建和 Bean 之间的依赖注入，对于 Bean 的创建可以通过在 XML 里面使用 <bean/> 标签来配置，
        对于 Bean 之间的依赖可以使用构造方法注入、Set 方法注入在 XML 里面配置。但是使用这种方式会使 XML 变的比较臃肿庞大，并且还需要开发人员一个个的在
        XML 里面配置 Bean 之间的依赖，这简直是一个灾难；
           还好 Spring 框架给我们提供了一系列的注解让开发人员从这个灾难中解脱出来，比如在一个类的成员变量上标注了一个简单的 @Autowired 注解就可以实现了 Bean 之间
        的自动依赖注入，在一个类上标注了一个简单的 @Component 注解就可以让一个 Bean 注入到 Spring 容器...更便捷

        实现：1.先创键一个类，用于定义配置类，告诉java要使用注解进行类的注入
             2.再将其他业务层类进行注入，类中的字段变量进行依赖注入（注意：bean层一般不用写类置入，自动含有）
             3.创键测试类，进行统一测试：

        注解含义：
          1.@Configuration：告诉spring这是一个 配置类
          2.@ComponentScan（value="包路径"）：包扫描，将该包下的所有注解都加载到spring容器中，也可以指定排除的注解（没学）
          3.@Bean（"id名"）：在配置类中使用,用于给注入的类配置具体数据（eg：给变量赋值）
                给spring容器中注册一个Bean（相当于在xml文件中创建的 <bean/> 标签），类型为方法的返回值了类型，id默认为当前方法名，也可自定义id名
                可以给配置类中定义属性...

          4.@Scope（"作用范围"）：控制类的作用范围
                singleton：单实例（默认范围），执行原理：使用 new AnnotationConfigApplicationContext(配置类名.class)方法启动ioc容器时就会调用其中的方法创建对象到ioc容器中，以后每次
                                                     使用  方法进行获取就是直接从容器（map.get（））中拿，也就是每次调用  方法
                                                     调用的其实是容器中以创建好的对类
                prototype: 多实例，执行原理：使用   方法启动ioc容器时不会去调用方法将对象放在容器中，而是每次使用  方法从容器中获取
                                           获取对象的时候才会去创建对象

           5.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上；两者如果都写在字段上，那么就不需要再写setter方法
                通过Spring注入的Bean一般都被定义成private，并且要有getter和setter方法，显得比较繁琐，增加了代码量，而且有时会搞忘造成错误。
                但是在变量上添加@Autowired，@Resource()注解，不再需要写相应的getter和setter方法：
            @Autowired:注入依赖对象，spring容器根据被托管的类或者变量之间的依赖关系，而注入这个类的实例对象或者变量的值；作用：依赖注入变量（定义的变量类）

            @Resource():注入依赖对象，spring容器根据被托管的类或者变量之间的依赖关系，而注入这个类的实例对象或者变量的值；作用：依赖注入变量（定义的变量类）
                有两个重要的属性：name和type，而Spring将@Resource注解的name属性解析为bean的名字，而type属性则解析为bean的类型

           6.为了方便不同层最好用不同的注解实际上都是一样的，都是用于不同层中类的注入，注入到IOC容器中，作为Spring的Bean来管理。
                @Controller:一般用在表现层
                @Service:一般用在业务层
                @Repository:一般用在持久层

 */
public class BiJi {
}
